package main

import "fmt"

type Rectangle struct {
	Length int
	Width  int
}

// 函数是全局定义，调用时不会有特别的限制
// 变量声明和函数声明一致，都是把类型放在了最后
func calcArea(rectangle Rectangle) int {
	return rectangle.Length * rectangle.Width
}

// 方法附着在对象上，必须通过对象才能实现方法的调用，Rectangle为方法的接收者
// 面向对象变成的方式
func (rectangle Rectangle) loadArea() int {
	return rectangle.Length * rectangle.Width
}

func main() {
	rectangle := Rectangle{
		Width:  10,
		Length: 10,
	}
	r := new(Rectangle)
	r.Width = 20
	r.Length = 30
	fmt.Println(calcArea(rectangle))
	fmt.Println(rectangle.loadArea())
	fmt.Println(r.loadArea())
}
